The present invention is generally related to flight management systems. More particularly, the present invention related to a flight management system architecture composed of a full-featured flight management system that extends a single architecture to diverse systems (e.g., communication, controllers, monitoring, data link, etc.) that are normally independently managed and not easily integratable into a flight management system architecture.
Existing flight management systems (FMS) are notoriously difficult to modify and maintain. History has generally shown that development programs that are executed strictly on the basis of reused code from existing flight management systems have unacceptably long development schedules and, therefore, excessively high development costs. Furthermore, if there are several development programs being executed concurrently, there are frequent occasions where two or more development teams are performing similar development tasks with low possibility of taking advantage of each other's work. Long development schedules, cost overruns, and lack of team synergy can all be attributed to a single characteristic of the existing systems' lack of a well documented and/or easily extensible software architecture.
Because there are generally few software architectures that are well thought-out and documented with regard to multi-system management within a flight management architecture, the primary artifact that can be used during development of new programs is code. Without software architecture, modifications are made to the code from the software developer's perspective in order to implement new requirements. Often, software requirements that are used as the basis for implementation do not reflect the original problem being solved or the original capability being added. This leads to a software solution that can be virtually incomprehensible from a user's standpoint. Over time, as changes upon changes are made, the implementation becomes an unmanageable conglomeration of software modules that all have the potential to depend on each other. When this occurs, the result is typically "spaghetti-code." Further complicating the issue can be the fact that there are several FMS programs executing simultaneously. Because of the development process just described (basically, code-based), as soon as one program makes a change, it can be virtually impossible for that program to take advantage of desirable changes that have been made on one of the other programs or modules. Therefore, it can be entirely possible that the personnel on two or more program teams are working on the same problem at the same time and are not generally able to collaborate.